package com.ruoyi.flowable.factory;

import lombok.Getter;
import org.flowable.engine.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * @description flowable 引擎注入封装（方便一次性引入常用服务）
 *
 * @author XuanXuan
 * @date 2021-04-03
 */
@Component
@Getter
public class FlowServiceFactory {

    /**
     * 流程定义文件、静态资源的管理服务
     * */
    @Resource
    protected RepositoryService repositoryService;

    /**
     * 运行时服务
     * */
    @Resource
    protected RuntimeService runtimeService;

    /**
     * 鉴权服务：管理用户、组等权限
     * */
    @Resource
    protected IdentityService identityService;

    /**
     * 任务服务
     * */
    @Resource
    protected TaskService taskService;

    /**
     * 表单服务
     * */
    @Resource
    protected FormService formService;

    /**
     * 历史服务
     * */
    @Resource
    protected HistoryService historyService;

    /**
     * 引擎管理服务
     * ManagementService提供了管理和操作Flowable引擎的功能，包括查询和操作作业、批量操作、事件日志、锁管理等。通过这些方法，可以实现对引擎的管理和监控，执行一些管理任务和操作。
     * */
    @Resource
    protected ManagementService managementService;

    /**
     * 引擎服务
     * ProcessEngine 是 Flowable 引擎的核心对象，它是流程引擎的主入口，负责与各个服务进行交互和管理流程的整个生命周期。
     * */
    @Qualifier("processEngine")
    @Resource
    protected ProcessEngine processEngine;
}
